package com.example.easyexcel.dto;

import lombok.Data;
import java.time.LocalDateTime;

/**
 * 数据指标表 DTO（用于数据传输）
 * 对应数据库表：t_data_index
 */
@Data
public class DataIndexDTO {

    /**
     * 指标ID（数据库自增，传输时可用于标识唯一指标）
     */
    private Long dataIndexId;

    /**
     * 模型ID（外键，关联所属模型）
     */
    private Long modelId;

    /**
     * 指标中文名称（必填）
     */
    private String dataIndexCnName;

    /**
     * 指标别名（必填，可能包含多个别名，用分隔符分隔）
     */
    private String dataIndexAlias;

    /**
     * 指标英文名称（必填）
     */
    private String dataIndexEnName;

    /**
     * 口径说明（指标统计范围、计算逻辑的详细描述）
     */
    private String coverageDescr;

    /**
     * 指标状态（TINYINT）：1-启用，0-禁用（示例，需与业务一致）
     */
    private Integer dataIndexSc;

    /**
     * 指标类型（TINYINT）：1-基础指标，2-衍生指标（示例，需与业务一致）
     */
    private Integer dataIndexTc;

    /**
     * 指标计算表达式（必填，如：sum(amount)/count(user_id)）
     */
    private String dataIndexCalcExpression;

    /**
     * 数据类型（如：int、decimal、varchar等）
     */
    private String dataType;

    /**
     * 格式化规则（如：保留2位小数、日期格式yyyy-MM-dd等）
     */
    private String formatRule;

    /**
     * 单位（如：个、元、%等）
     */
    private String dataIndexUnits;

    /**
     * 最小粒度（如：天、小时、分钟，标识指标统计的最小时间单位）
     */
    private String dataIndexMinGranularity;

    /**
     * 创建用户（记录创建者账号）
     */
    private String creatorName;

    /**
     * 修改用户（记录最后修改者账号）
     */
    private String modifierName;

    /**
     * 创建时间（精确到毫秒）
     */
    private LocalDateTime createTime;

    /**
     * 更新时间（精确到毫秒，记录最后修改时间）
     */
    private LocalDateTime updateTime;
}
